package common

import (
	cali "github.com/wsw188440873/ctrl-cali/model"
	"iot-base/auth/api/crontab"
	"iot-base/auth/config"
	"iot-base/auth/db"
	"iot-base/auth/model"
	"iot-base/auth/svc"
	"iot-base/auth/utils"
	"iot-base/common/his"
)

func InItData() {
	// 初始化参数
	his.SetHisModelIds(config.ConfJson.HisJson)
	// CreateTable 初始化表
	model.NewInitTable().CreateTable()
	//校准初始日志表.
	cali.InitTaskLog(db.Db)
	//重新加载任务.
	go crontab.ReloadTasks()
	//设置类型
	his.SetHisPtype(config.PType)
	utils.AntsPool.Submit(func() {
		his.SubHistoryData()
	})

	crontab.Cron.Custom("0 1 */1 * * *", his.CronHourSaveDb)
	crontab.Cron.Custom("0 */1 * * * *", his.CronMinuteSaveDb)
	crontab.Cron.Custom("0 */5 * * * *", his.Cron5MinuteSaveDb)

	if config.PType != "cloud" {
		go RepairCaliLog()
	}
}

// RepairCaliLog 修复数据
// 程序启动的时候，需要检查数据是否有，正在执行中的数据，
// 如果有需要改为失败.
func RepairCaliLog() {
	var list []map[string]interface{}
	db := svc.Dao.GetDb()
	err := db.Model(model.TaskLog{}).Where("status = 0").Select("id").Limit(1000).Find(&list).Error
	if err != nil || len(list) == 0 {
		return
	}
	for _, v := range list {
		updateParams := map[string]interface{}{
			"status": 2,
			"msg":    "异常错误，自动修正失败状态",
		}
		db.Model(model.TaskLog{}).Where("id = ?", v["id"]).Updates(&updateParams)
	}
}

//func test() {
//	time.Sleep(time.Second * 10)
//	// 删除31天之后的表
//	property.DropTable("realdata", time.Now().Add(-time.Hour*24*31))
//	property.RealDataSplit(time.Now().Add(time.Hour * 24))
//	property.DropTable("alarm_histroys", time.Now().Add(-time.Hour*24*31))
//	property.AlarmHistroySplit(time.Now().Add(time.Hour * 24))
//	property.DropTable("his_data", time.Now().Add(-time.Hour*24*31))
//	property.HisDataSplit(time.Now().Add(-time.Hour * 24))
//}
